❶ 有大侠知道java或是js或是css中怎么将单通道灰度图片与三通道灰度图片吗有没有什么相关的算法啊
int ImageStretchByHistogram(IplImage *src1,IplImage *dst1)
/*************************************************
Function: 通过直方图变换进行图像增强,将图像灰度的域值拉伸到0-255
src1: 单通道灰度图像
dst1: 同样大小的单通道灰度图像
*************************************************/
{
assert(src1->width==dst1->width);
double p[256],p1[256],num[256];
memset(p,0,sizeof(p));
memset(p1,0,sizeof(p1));
memset(num,0,sizeof(num));
int height=src1->height;
int width=src1->width;
long wMulh = height * width;
//statistics
for(int x=0;x<src1->width;x++)
{
for(int y=0;y<src1-> height;y++){
uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
num[v]++;
}
}
//calculate probability
for(int i=0;i<256;i++)
{
p[i]=num[i]/wMulh;
}
//p1[i]=sum(p[j]); j<=i;
for(int i=0;i<256;i++)
{
for(int k=0;k<=i;k++)
p1[i]+=p[k];
}
// histogram transformation
for(int x=0;x<src1->width;x++)
{
for(int y=0;y<src1-> height;y++){
uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
((uchar*)(dst1->imageData + dst1->widthStep*y))[x]= p1[v]*255+0.5;
}
}
return 0;
}
void CCVMFCView::OnImageAdjustContrast()
{
if(workImg->nChannels>1)
OnColorToGray();
Invalidate();
dst=cvCreateImage(cvGetSize(workImg),workImg->depth,workImg->nChannels);
ImageStretchByHistogram(workImg,dst);
m_dibFlag=imageReplace(dst,&workImg);
Invalidate();
}
这个是C++代码格式的,你可以参考一下思路
❷ rgb在js中什么意思
rgb在js中意思是三原色色彩模式。根据查询相关公开信息显示:RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。
❸ js建立简单socket
import Stomp from "stompjs";
import SockJS from "sockjs-client";
let stompClient = null;
class Socket {
constructor(socketMsg) {
this.socketMsg = socketMsg;
}
/**
* 向服务器发起websocket连接并发送CONNECT帧
* @param {object} stompType 与服务器连接通道类型
* @param {function} callback 回调方法
*/
static startConnect( callback) {
// 建立连接对象
const socket = new SockJS(''连接地址);
// 获取 STOMP 子协议的客户端对象
stompClient = Stomp.over(socket);
// 请求头验证,需要登陆
const headers = {
userId: JSON.parse(sessionStorage.getItem("id"))
};
// stompClient.debug = () => {};
stompClient.connect(
headers,
(result) => {
console.log("开始连接",result)
// 订阅队列推送
stompClient.subscribe('订阅1队列地址', res => {
// 收到推送内容
callback(data);
});
// 订阅被邀请
stompClient.subscribe('订阅2地址', res => {
callback(data);
});
},
() => {
// console.log(err);
}
);
}
// 主动发送消息
static send(data) {
stompClient.send(data.url, headers, data.sendMsg);
}
// 断开连接
static disconnect() {
stompClient.disconnect(() => {
// console.log("连接关闭");
});
}
}
export default Socket;
❹ Qt嵌入浏览器(六)——QCefView实现JS通信接口
上一节中,我们完成了CEF各基本组件的封装,并完成了浏览器基本功能的实现。 >>点这里回顾上节内容
本节我们将尝试扩展所实现的各组件,实现浏览器与页面的双向通信。
本篇的小目标:
上一节曾提到过,CEF应用在默认情况下包含很多子进程,这些进程会共享同一个执行入口。除了主进程的各类处理接口外,CEF还提供了各类子进程的处理接口。而 页面到浏览器的消息通道 就可以借助对 渲染进程 的控制来实现,整体流程如下:
完成上述步骤后,在页面调用对应的消息通道函数时,V8处理器则会相应地进行处理,从而完成消息的发送。
另一方面,实现 浏览器到页面 的消息通道和第二节中基于Qt WebEngine的方法类似,CEF也提供了执行JS脚本的方法,只需在页面中定义好对应的消息接口,并通过执行脚本方法执行该接口即可完成消息的发送。
因此,实现双向通道主要的问题集中在针对渲染进程处理和JS脚本执行的扩展上。接下来先就渲染进程处理进行说明。
为了实现对渲染进程的处理,我们首先需要向上一节中封装的QCefContext中添加对渲染进程入口的解析和处理。具体实现如下:
上面的实现除了处理了CEF主进程外,还判断了子进程是否为渲染进程(Windows环境下的renderer进程和Linux环境下的zygote进程),如果发现当前处理的是渲染进程,则创建一个渲染进程处理器QCefRenderHandler的实例。QCefRenderHandler的声明如下:
和主进程CefApp的实现类似,这里也实现了CefApp接口,此外额外实现了CefRenderProcessHandler接口的OnContextCreated方法,来获取V8上下文的引用,具体实现如下:
上面的实现将sendMessage函数定义为消息通道,并注册到了window对象上。sendMessage函数的具体实现则放在v8Handler的实现中。QCefV8Handler声明如下:
QCefV8Handler通过实现CEF V8处理器的Execute执行方法,完成对所加载的JS函数的过滤,并进行相应的处理,实现如下:
这里首先对函数名和参数进行了校验,之后调用CefBrowser的IPC方法SendProcessMessage向主进程的CefClient发送消息,从而完成页面向浏览器主进程消息的传递。
要实现页面到浏览器的消息通道,除了完成了上面渲染进程的控制扩展,我们还需要在QCefClient中添加接收IPC消息的接口实现。首先在QCefClient头文件中声明对CefClient接口的重载:
然后实现这个接口,完成消息的接收处理:
可以看到这里只是对收到的消息进行了简单的转换,并通过信号发送给感兴趣的下游控件使用。在第四小节的实现中,我们将QCefClient封装到了QCefView中,因此在QCefView中也需要将这个信号转发给它的下游控件:
这样,QCefView接收JS消息的通道就实现完成了。
这里额外讲解一下有关js alert的特殊处理。要实现js调用alert方法时的弹窗提醒,需要额外在CefClient中实现CefJSDialogHandler接口的OnJSDialog方法,参考实现如下:
承前所述,浏览器到页面的消息发送通过CEF的JS脚本执行接口实现。首先在QCefView中,声明并实现一个执行JS脚本的方法:
然后指定一个特定的JS方法,作为消息通道使用:
如此,QCefView发送JS的通道也实现完成了。
完成了消息通道的实现,接下来我们实际使用一下我们定义好的消息通道。
首先是Qt端的实现,在MainDlg的initWebView方法中,添加对JS消息的监听,并将监听到的消息通过QMessageBox显示出来:
然后添加文本输入和发送按钮,并在按钮点击信号对应的槽中调用QCefView的消息发送方法:
接下来在页面端实现消息接收和发送的接口msgutils.js:
可以看到这里我们使用了上面定义的recvMessage和sendMessage两个函数。然后在页面上调用这些接口:
实际运行一下浏览器,并加载我们实现的这个页面,消息发送效果如下:
有关CEF消息通道的讲解就先进行到这里。下一节将分析使用CEF接口实现Https双向认证的方法。
>>返回系列索引
[1] Chromium Embedded Framework官网
[2] Chromium Embedded Framework官方教程
❺ 从 jQuery 到 Vue3 的快捷通道
jQuery的使用非常方便,用 script 引入 js文件即可,然后找到DOM即可开始操作。
而 Vue3 也支持直接用 script 引入的方式,然后使用插值的方式绑定数据,我们来看一下使用方法:
这样我们就可以在网页里面使用 Vue 了,另外我们引入了一个UI库——element-plus。
然后我们写一个 hello word:
一个项目有很多功能,显然不能把所有代码都放在一起,那么如何管理代码呢?Vue提供了组件化的方式,便于组织代码。
我们可以建立一个 count.js 文件(单文件组件),实现上面那个简单的计数功能:
这样就可以建立一个单独的Vue组件,相关的代码都可以放在这里,管理起来就更容易了。
一般我们可以用 Vite 建立一个项目,然后安装需要的各种插件,但是这需要我们先了解 node、npm、yarn、vite等,还要先配置好环境,这些对于新手来说容易懵。
那么能不能 暂时 跳过这些,直接建立一个工程化的项目呢?当然是可以的!
我们可以模仿 Vite 建立的项目的文件结构,用CDN的方式实现一个项目。
可以发现和 Vite 建立的项目的结构是基本一样的,只是把.vue后缀变成了.js后缀。
main.js 是入口文件,需要在 index.html 使用 type="mole" 的方式引入,这样main里面才可以使用“import”。
然后在main里面加载根节点、路由设置、状态设置、UI库等操作。
可以直接使用 import App from './app.js' 的方式加载,但是不好管理缓存。
所以采用了这种增加版本号的方式,以确保可以加载最新文件。
可以在 app.js 做页面布局,当然也可以实现其他功能。
这里采用异步组件的方式加载子组件,方便设置版本号,确保可以加载最新文件。
为了更方便的加载组件,我们可以使用 vue-router 设置路由。
如果组件只有js文件,那么可以直接使用 import 来加载,如果组件由js+html组成,需要使用 myImport 来加载,myImport 是我自己封装的函数,在最后介绍。
我们先做一个简单的菜单:
这里先使用 router-link 做个简单的连接,也可以使用 el-menu 做菜单。
这里采用最新的 pinia 进行状态管理,因为 Vuex 有点臃肿。
首先需要在 main.js 里面挂载pinia,见 main 的部分。
然后我们建立一个js文件,定义一个状态,再建立一个js文件作为组件。
然后在组件里面引入:
我们可以把 template 部分拿出去,做成 html 文件:
这样一个简单的项目结构就搭建起来了。
本篇仅为过渡,并不是说正式项目要用这种方式开发,因为缺点也是很明显的。
当然也是有一些优点:
template 部分,如果用字符串的方式写,那么比较麻烦,所以可以分为 html 文件的方式来写,这样可以使用提示、补全和验证等功能。
然后做一个加载的函数 myImport :
❻ 问个关于内存和双通道的问题(涉及反JS)
双通道2G。比单个内存2G。速度快了大概5%而已。换不换无所谓。
根据LZ你目前的情况我可以提供一些意见给你,具体情况你可以自己判断。
1, 单根2G内存比2根1G便宜
2, 只要是正品的内存,拿到总代理,保修是一样的
3, 1根金士顿1G,800的内存价格大概130元(广州价)。
4, LZ你的内存不是在长沙买的,商家要求你给一些更换费用,很合理。但是多少才合理,要看情况了。
❼ javascript中如何查看和调用函数的返回值
<!DOCTYPE html>
<html>
<meta charset="utf-8" />
<script>
function testZ() {
var x=9;
var y=1;
var z=x+y;
return z;
}
function getZ () {
var i = testZ();
alert(i);
}
</script>
<body>
<div onclick="getZ();" style="color:red;">Click Me 点我..</div>
</body>
</html>
一个抄函数返回的值是拿来供另一个或其他多个函数使用的,一个函数里面返回的变量值只能在函数内部查看调用,返回值就提供了一个连接多个函数的通道。不然的话你得用全局变量,js里面用全局变量是很糟糕的
js里面时不能像你这样写法一次返回多个值的,只能返回x、y中的一个(其他很多语言这点都比js方便)。
要返回多个的话,你可以把x、y放到数值之类的玩意里面,然后再把整个数组返回出去。接收处理数据的另一个函数再把数组里面的x、y分别取出来使用。
有几种方法返回多个值,你网络下:js返回多个值
❽ 农田项目机耕道路js的意思是什么
1、机耕路指的是农机具(拖拉机,收割机等)出入田间地头进行农田操作的通道。
2、机耕路是连接乡村道路或其他公路。
3、用于农业机械通往作业地块的主干田间道路。
❾ 内存无法双通道,JS告诉我是主板的CPU插槽针脚弯了,是这样吗
不可能是主板的针脚弯了,针脚弯了你插到有问题的那个插槽上,不管几根内存都会出问题,单插一个没有问题说明主板针脚没有问题,有可能是兼容性的问题。
❿ 内存无法双通道,JS告诉我是主板的CPU插槽针脚弯了,是这样吗
插1,2 或者3,4插槽,看看!
借个U,换上试试! 内部集成 内存控制器的U,好是好,不过,万一 内存控制器 出故障,也麻烦!我以前碰到过一个AMD 的4400+,就是这样,别的都正常,就是不能开双通道!内存、主板都换了很多,就是不行!后来 换了个U,所有主板和内存都 一切正常,完美双通道!后来,证实,CPU内部 集成的 内存控制器 坏了!
AMD ,从2005年起,推出的U,都已经集成了内存控制器