❶ 有大俠知道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,都已經集成了內存控制器